// 缓存 get就是获取到指值，并且把其放在最顶层 就像一堆书一样，挪到最上面
// put 就是放值，如果值存在删除，再添加
// 超过容量 delete删除掉map的第一个元素，即用的最不多的书

// LRU缓存
// 记住首先是进行创值
function LRU(capacity) {

    this.capacity = capacity
    this.map = new Map()
}
LRU.prototype.push = function (key,value) {
    if(this.map.has(key)){
        this.map.delete(key)
    }
    this.map.set(key,value)
    if(this.map.size>this.capacity){
        this.map.delete(this.map.keys().next().value)
        // this.map.keys()是迭代器 [object Map Iterator]
    }
}
LRU.prototype.get=function(key){
    if(this.map.has(key)){
        let temp=this.map.get(key)
        this.map.delete(key)
        this.map.set(key,temp)
        return temp
    }else{
        return -1
    }

}
const lruCache = new LRU(1);
lruCache.push("key2", "value2");
lruCache.push("key3", "value3");
// 尝试获取存在的键对应的值
console.log(lruCache.get("key3"));